package com.rla.domain.bo;

import com.rla.common.core.domain.BaseEntity;
import com.rla.common.utils.validate.AddGroup;
import com.rla.common.utils.validate.EditGroup;
import com.rla.domain.MallOrder;
import com.rla.domain.MallOrderAddress;
import com.rla.domain.MallOrderDetail;
import com.rla.domain.MallOrderPay;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 零售订单业务对象 mall_order
 *
 * @author rla
 * @date 2025-08-08
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class MallOrderBo extends BaseEntity {

    /**
     * 唯一
     */
    private String id;

    /**
     * 用户ID
     */
    private String userId;

    /**
     * 订单类型 1售卖 2退货 3积分兑换
     */
    private String orderType;

    /**
     * 总数量
     */
    private Long totalNum;

    /**
     * 总金额
     */
    private BigDecimal totalAmount;

    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;

    /**
     * 应付金额
     */
    private BigDecimal payableAmount;

    /**
     * 订单状态 0未支付（有状态不显示） 1已支付 （待取货、待发货）-1、已取消   12待收货   99已完成
     */
    private String orderStatus;

    /**
     * 退货原因(退货)
     */
    private String backReason;

    /**
     * 订单时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date orderTime;

    /**
     * 关联订单(退货)
     */
    private String assocOrderId;

    /**
     * 售后退货状态 0未退款 1退款中 99完成退款  20申请退款 21同意退款(待商家退款) 22同意退货(待买家发货) 23 拒绝退款/退货 24 待商家收货 25商家收货(待商家退款)
     */
    private String backStatus;

    /**
     * 订单完成时间
     */
    private Date finishTime;

    /**
     * 获赠积分
     */
    private Long pointsNum;

    /**
     * 应付积分
     */
    private Long usePoints;

    /**
     * 退款金额
     */
    private BigDecimal backAmount;

    /**
     * 退款积分
     */
    private Long backPointsNum;

    /**
     * 处方文件地址
     */
    private String fileUrls;

    /**
     * 关联电子处方编码
     */
    private String rpNo;

    /**
     * 0关联电子处方是否审方 0未审方 1已审方
     */
    private String rpReview;

    /**
     * 收货地址
     */
    private String receiveUserAddress;

    /**
     * 收货电话
     */
    private String receiveUserPhone;

    /**
     * 线上支付方式1微信支付 2储值支付 3积分支付
     */
    private String onlinePayMode;

    /**
     * 线上支付时间
     */
    private String onlinePayTime;

    /**
     * 快递公司编码
     */
    private String deliveryCode;

    /**
     * 快递公司名称
     */
    private String deliveryName;

    /**
     * 快递单号
     */
    private String deliveryNo;

    /**
     * 发货/自提时间
     */
    private String deliveryTime;

    /**
     * 收货时间
     */
    private String acceptTime;

    /**
     * 是否包邮(0、包邮，1、不包邮)
     */
    private String isFreeShipping;

    /**
     * 邮费
     */
    private BigDecimal mallPostage;

    /**
     * 收货人姓名
     */
    private String receiveUserName;

    /**
     * 取货时间段
     */
    private String timeSlot;

    /**
     * 是否包含积分支付
     */
    private String isPoints;

    /**
     * 使用积分数量
     */
    private Long useIntegralNum;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    private String delFlag;

    /**
     * 签名图片地址
     */
    private String picUrl;

    private List<MallOrderDetail> orderDetailList;

    private List<MallOrderPay> orderPayList;

    private MallOrderAddress orderAddress;

    private String goodsCategory;

    private String drugCode;
    private String drugId;

    private String backApplyWay;
    private Date backApplyTime;
    private String backWay;
    private String applyInstructions;

    private String deliverTime;

    private String rollbackOrderStatus;

}
